﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using GAIA_Logica;
using System.Net;
using System.IO;

namespace GAIA_IU
{
    public partial class TerrenosUI : System.Web.UI.Page
    {
        /**/
        GAIA_Logica.Terreno terreno;
        GAIA_Logica.Localidad localidad = new Localidad();
        List<GAIA_Logica.Localidad> listaLocalidades;
        List<GAIA_Logica.Localidad> listaLocalidadesCanton;
        List<GAIA_Logica.Localidad> listaLocalidadesDistrito;
        List<Segmento> parcelas;
        protected void Page_Load(object sender, EventArgs e)
        {

            bool login = Session["login"] != null ? Boolean.Parse(Session["login"].ToString()) : false;

            if (login)
            {
                if (IsPostBack)
                {

                }
                else
                {
                    listaLocalidades = localidad.getAllProvincias();
                    cargarProvincias();
                    listaLocalidadesCanton = localidad.getCantonesPro(1);
                    cargarCantones();
                    listaLocalidadesDistrito = localidad.getDistritosCanton(101);
                    cargarDistritos();
                }
            }
            else {
                Response.Redirect("Login.aspx");
            }
        }

        protected void cargarProvincias()
        {

            list_Provincia.DataSource = listaLocalidades;
            list_Provincia.DataBind();
            //Session["ListaDeClientes"] = listaClientes;
        }

        protected void cargarCantones()
        {

            list_Canton.DataSource = listaLocalidadesCanton;
            list_Canton.DataBind();
            //Session["ListaDeClientes"] = listaClientes;
        }

        protected void cargarDistritos()
        {

            list_Distrito.DataSource = listaLocalidadesDistrito;
            list_Distrito.DataBind();
            //Session["ListaDeClientes"] = listaClientes;
        }

        protected void btn_salvar_Click(object sender, EventArgs e)
        {
            int distrito = int.Parse(list_Distrito.SelectedValue);
            string _str_tamano = txt_tamano.Text;
            string _tamano = _str_tamano.Replace(".", ",");
            float tamano = float.Parse(_tamano);
            string unidad_medicion = DropDownListTamano.SelectedValue;
            string tipo_zona ="N/A";
            string poblado = txt_poblado.Text;

            try
            {
                terreno = new Terreno(tamano, distrito, txt_nombre.Text, unidad_medicion, tipo_zona, poblado);
                terreno.ingresarTerreno();
                insertarParcelas(terreno.Id);
                ClearForm();
                
                Avisar("Un nuevo terreno ha sido ingresado al sistema", true);

            }
            catch (Exception ex)
            {
                Avisar("Error al ingresar el terreno. Por favor intente nuevamente :(" + ex.Message + ")", false);
            }
            
        }

        protected bool insertarParcelas(int id_terreno)
        {
            bool result=false;
            //List<GAIA_Logica.Segmento> listaSegmentos;
            GAIA_Logica.Segmento tempSegmento;
            int cant_parcelas = int.Parse(Request["cant_parcelas"]);
            try
            {
                for (int x = 0; x < cant_parcelas; x++)
                {
                    string parce_nombre = Request["parcelas[" + x + "].nombre"];
                    string _request_parce_tamano = Request["parcelas[" + x + "].tamano"];

                    string _parce_tamano = _request_parce_tamano.Replace(".", ",");
                    float parce_tamano = float.Parse(_parce_tamano);

                    tempSegmento = new Segmento(parce_tamano, parce_nombre, id_terreno);
                    result=tempSegmento.ingresarSegmento();
                }
            }
            catch (Exception ex)
            {
                Avisar("Error al ingresar las parcelas. Por favor intente nuevamente :(" + ex.Message + ")", false);
                result = false;
            }
            return result;
        }

        protected void Avisar(string aviso, bool resultado)
        {
            aviso_label.Text = aviso;
            if (resultado)
            {
                aviso_label.CssClass = "_true";
            }
            else
            {
                aviso_label.CssClass = "_false";
            }

        }

        protected void ClearForm()
        {
            txt_nombre.Text = "";
            txt_tamano.Text = "";
        }

        protected void list_Provincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            listaLocalidadesCanton = localidad.getCantonesPro(int.Parse(list_Provincia.SelectedValue));
            cargarCantones();
            listaLocalidadesDistrito = localidad.getDistritosCanton(listaLocalidadesCanton[0].IdCanton);
            cargarDistritos();
        }
        
        protected void list_Canton_SelectedIndexChanged(object sender, EventArgs e)
        {
            listaLocalidadesDistrito = localidad.getDistritosCanton(int.Parse(list_Canton.SelectedValue));
            cargarDistritos();
        }


    }
}